home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / a_utils / perl / perl5a1.lha / perl5alpha1 / do / aprint < prev    next >
Encoding:
Text File  |  1992-08-15  |  828 b   |  42 lines

  1. bool
  2. do_aprint(arg,fp,arglast)
  3. register ARG *arg;
  4. register FILE *fp;
  5. int *arglast;
  6. {
  7.     register STR **st = stack->ary_array;
  8.     register int sp = arglast[1];
  9.     register int retval;
  10.     register int items = arglast[2] - sp;
  11.  
  12.     if (!fp) {
  13.     if (dowarn)
  14.         warn("print to unopened file");
  15.     errno = EBADF;
  16.     return FALSE;
  17.     }
  18.     st += ++sp;
  19.     if (arg->arg_type == O_PRTF) {
  20.     do_sprintf(ARGTARG,items,st);
  21.     retval = do_print(ARGTARG,fp);
  22.     }
  23.     else {
  24.     retval = (items <= 0);
  25.     for (; items > 0; items--,st++) {
  26.         if (retval && ofslen) {
  27.         if (fwrite(ofs, 1, ofslen, fp) == 0 || ferror(fp)) {
  28.             retval = FALSE;
  29.             break;
  30.         }
  31.         }
  32.         if (!(retval = do_print(*st, fp)))
  33.         break;
  34.     }
  35.     if (retval && orslen)
  36.         if (fwrite(ors, 1, orslen, fp) == 0 || ferror(fp))
  37.         retval = FALSE;
  38.     }
  39.     return retval;
  40. }
  41.  
  42.